package com.example.autoconfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration//自动配置类
@EnableConfigurationProperties(HelloProperties.class)//该注解读入我门的配置对象类
@ConditionalOnClass(HelloServcie.class)//当类路径存在HelloServcie这个类时，就会加载这个类，否则跳过这个类，不会报错
//这个很有用，当我们不同jar包间依赖的类不存在时，直接跳过，不会报错
public class HelloAutoConfig {

    @Autowired
    private HelloProperties helloProperties;

    @Bean
    @ConditionalOnMissingBean(HelloServcie.class)//这个注解配置就是使得springboot可以优先使用自定义配置的核心，
    // 如果我们没有自定义Bean，springboot就会帮我们生成一个新的Bean
    public HelloServcie getHelloServcie(){
        HelloServcie helloServcie = new HelloServcie();
        helloServcie.setMsg(helloProperties.getMsg());
        return helloServcie;
    }

}
